﻿namespace daSyntaxAnalyser
{
    /// <summary>
    /// Delphi токены
    /// </summary>
    public enum DelphiTokens
    {
        Undefined, FileStart, FileEnd, AsmCode,     // служебные
        Id, Digits, Real, Exponent, HexConstant, Char, String, LComment, MLComment, OComment, BComment, // лексика и комментарии
        Program, Library, Unit,             // типы файлов
        Initialization, Implementation, Finalization, Uses, Exports,    // секции
        Type, Var, Const, Resourcestring, Threadvar,                    // секции
        Interface, Dispinterface, Class, Object, Record, Set, Array, File,  // типы
        Abstract, Sealed,                   // модификаторы классов
        Procedure, Function, Property, Operator, Constructor, Destructor,   // методы
        ReadOnly, Dispid, Platform, Absolute, Packed, Default, Nodefault, Implements, Reference,     // свойства
        Private, Public, Published, Protected, Strict,                  // секции классов
        Virtual, Override, Overload, Static, Safecall, Stdcall, Dynamic, Forward, Near, Far, Reintroduce, Register, Stored, Automated, Cdecl, Varargs, Message, Assembler,  // директивы методов
        Name, Index, Export, Local, External, Resident,             // директивы методов и т.д.
        In, Out, Read, Write,                                       // дополнение к директивам
        Asm, Begin, End, If, Then, Else, Case, Of, While, For, To, Downto, Do, Until, Repeat, Try, Except, Finally, Goto, Label, With, As, Is, At, On, Raise,   // остальные ключевые слова
        Not, And, Xor, Or, Shl, Shr, Div, Mod,                      // высокоприоритетные операторы
        Multiply, Addition, Subtraction, Division, Equal, Less, Greater, LessOrEqual, GreaterOrEqual, NotEqual,     // низкоприоритетные операторы
        Assignment, Dot, Interval, Colon, Comma, Semicolon,                // := . .. : , ;
        LSBr, RSBr, LBr, RBr, LFBr, RFBr, LCBr, RCBr, LRBr, RRBr, LDBr,   // [ ] ( ) { } /* */ (* *) //
        AtSign, Caret,                                                    // @ ^
        NewLine,                                                    // новая строка
        True, False, Inherited                                      // зарезервировано
    }
}
